﻿#pragma once
#include <stdio.h>
#include <stdbool.h>
#include <assert.h>
#include <stdlib.h>

//First In  First Out

//单链表实现队列

//比x小的,那题,全部比x小,全部比x大，没有哨兵位要单独处理,如果都大或都小，要单独处理

//队列实现就是头删和尾插

//头指针需要，因为要头删,尾指针增加
#pragma once

//typedef int QDataType;
struct BinaryTreeNode;
typedef struct BunaryTreeNode* QDataType;

typedef struct QueueNode
{
	QDataType data;
	struct QueueNode* next;

}QNode;

typedef struct Queue
{
	QNode* head;
	QNode* tail; 
	int size;    
}Queue;

void QueueInit(Queue* pq);
void QueueDestroy(Queue* pq);
void QueuePush(Queue* pq, QDataType x);
void QueuePop(Queue* pq);
QDataType QueueFront(Queue* pq);
QDataType QueueBack(Queue* pq);
bool QueueEmpty(Queue* pq);
int QueueSize(Queue* pq);

